package com.azxcrm.common.utils;

import java.util.UUID;

/**
 * 随机数工具类
 * 
 * @author Dustyone
 */
public class RandomUtils {
	
	/**
	 * Token源数据
	 */
	public static String[] chars = new String[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n",
			"o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8",
			"9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
			"U", "V", "W", "X", "Y", "Z" };
	
	/**
	 * 生成短口令
	 * @return
	 */
	public static String generateShortToken() {
		StringBuffer shortBuffer = new StringBuffer();
		String uuid = UUID.randomUUID().toString().replace("-", "");
		for (int i = 0; i < 8; i++) {
			String str = uuid.substring(i * 4, i * 4 + 4);
			int x = Integer.parseInt(str, 16);
			shortBuffer.append(chars[x % 0x3E]);
		}
		return shortBuffer.toString();

	}
	
	/** 
	 * 随机指定范围内N个不重复的数 
	 * @param min 指定范围最小值 
	 * @param max 指定范围最大值 
	 * @param n 随机数个数 
	 */  
	public static int randomCommon(int min, int max, int n){  
	    if (n > (max - min + 1) || max < min) {  
	           return 0;  
	       }  
	    int[] result = new int[n];  
	    int count = 0;  
	    while(count < n) {  
	        int num = (int) (Math.random() * (max - min)) + min;  
	        boolean flag = true;  
	        for (int j = 0; j < n; j++) {  
	            if(num == result[j]){  
	                flag = false;  
	                break;  
	            }  
	        }  
	        if(flag){  
	            result[count] = num;  
	            count++;  
	        }  
	    }  
	    return transfer(result);  
	} 
	
	/**
	 * 将int数组转换为整数
	 * @param arr
	 * @return
	 */
	public static int transfer(int[] arr){
        String str = "";
        for(int i=0; i<arr.length; i++){
            String s = new String();
            int z = arr[i];
            s = Integer.toString(z);
            str = str.concat(s);
        }
        int num = Integer.parseInt(str);
        return num;
    }
}
